#include <iostream>
#include <string>
using namespace std;
// 三个函数都是用来显示字符串的连接
string version1(const string & s1,const string & s2);
const string & version2(string & s1,const string & s2);
// 这个版本最差
const string & version3(string & s1,const string & s2);
int main()
{
     string input;
     string copy;
     string result;
     cout<<"输入字符串:"<<endl;
     getline(cin,input);
     cout<<"您输入的字符串为:"<<input<<endl;
     result = version1(input,"***");
     cout<<"现在你的字符串:"<<result<<endl;
     cout<<"之前你的字符串:"<<input<<endl;

     result = version2(input,"###");
     cout<<"现在你的字符串:"<<result<<endl;
     cout<<"之前的字符串:"<<input<<endl;

     cout<<"重置原始的字符串:"<<endl;
     input = copy;
     result = version3(input,"@@@");
     cout<<"现在你的字符串: "<<result<<endl;
     cout<<"之前你的字符串: "<<input<<endl;
     return 0;
}
string version1(const string & s1,const string & s2)
{
    string temp;
    temp = s2+s1+s2;
    return temp;
}
const string & version2(string &s1,const string &s2)
{
	s1 = s2+s1+s2;
	return s1;
}
const string & version3(string & s1,const string & s2)
{
	// 生成类temp
	string temp;
	// 将string连接，将结构放在临时变量中，然后
	// 复制变量返回给temp
	temp = s2+s1+s2;
	// 返回temp的引用（函数调用结束后temp就不存在了，无法返回引用）
	return temp;
}
